package com.twl.common.constant;

/**
 * 系统常量统一配置
 * 
 */
public final class Constant {

    /** KEY分隔符 */
    public static final char   KEY_SAPERATOR                         = '-';

    /** 屏蔽敏感信息后输出的内容 */
    public static final String SENSITIVE_CONTENT                     = "[敏感信息已和谐]";

    /** 内部系统外部交易编号前缀 */
    public static final String INNER_SYSTEM_OUT_TRANS_CODE_ID_PREFIX = "ALI";

    /** 工单中心回执的ID */
    public static final String TASK_CENTER_CHECKER_ID                = "taskCenter";

    /** sequence名称前缀 */
    public static final String SEQ_PACKAGEID_PREFIX                  = "SEQ_SGW_PACKAGEID_";
    
    /** 配置文件名称 */
    public static final String MGW_CONFIG_FILE_NAME                  = "application.properties";
    
    /** 挡板配置文件名称 */
    public static final String MGW_MOCK_CONFIG_FILE_NAME             = "mock.properties";
    
    /** sftp/local 请求文件名称key */
    public static final String FILENAME_KEY                          = "filename";

    /************************** 以下为网银相关字段 *************************************/

    /** mgw做为server时，将请求过来的HttpServletRequest.getQueryString方法取到的内容放到map里面，key为HTTP_QUERY_STRING */
    public static final String HTTP_QUERY_STRING                     = "HTTP_QUERY_STRING";

    /** 网银回执中保存订单号的字段 */
    public static final String DEPOSIT_ID                            = "depositId";

    /** 是否订单交易成功 */
    public static final String IS_SETTLE_SUCCESS                     = "isSettleSuccess";

    /** 清算结果 */
    public static final String SETTLE_STATUS                         = "settleStatus";

    /** 网银回执中返回给cashier的字段，通过settlecore传过来的Field名称 */
    public static final String CASHIER_ORDER_ID                      = "cashierOrderId";

    /** 网银回执中返回给cashier的字段，通过settlecore传过来的Field名称 */
    public static final String PAY_REQUEST_ID                        = "payRequestId";

    /************************** 以下为监控数据字典 *************************************/

    /** 交易类型编号 */
    public static final String TRANS_TYPE_ID                         = "transTypeId";

    /** 渠道系统编号 */
    public static final String CHANNEL_SYSTEM_ID                     = "channelSystemId";

    /** 交易流水号 */
    public static final String ORDER_NO                              = "orderNo";

    /** 错误码 */
    public static final String RESPONSE_CODE                         = "responseCode";

    /** 错误信息 */
    public static final String RESPONSE_MESSAGE                      = "responseMessage";

    /** 调用结果 */
    public static final String INVOKE_RESULT                         = "invokeResult";

    /** 调用耗时 */
    public static final String INVOKE_TIME                           = "invokeTime";

    /** 已经使用令牌数 */
    public static final String TOKEN_USED                            = "tokenUsed";

    /** 允许的最大令牌数 */
    public static final String TOKEN_MAX                             = "tokenMax";
    
    
    /** 银行B2C请求平安付,是否前台调用 */
    public static final String B2C_FRONT_CALL                       = "b2cFrontCall";
    
    
    /********************是否执行下一步操作*********************/
    /**是否执行下一步key名称*/
    public static final String NEXT_FLAG								="nextFlag";
    

    /**
     * 禁用构造函数
     */
    private Constant() {
        // 禁用构造函数
    }

    /**
     * 组装KEY值，默认使用'-'作为分割符号
     * 
     * @param inputs
     * @return
     */
    public static String getKey(String... inputs) {
        return getKey(KEY_SAPERATOR, inputs);
    }

    /**
     * 组装KEY值
     * 
     * @param saperator
     * @param inputs
     * @return
     */
    public static String getKey(char saperator, String... inputs) {
        StringBuilder result = new StringBuilder();
        for (int i = 0; i < inputs.length; i++) {
            String input = inputs[i];
            result.append(input);

            if (i != inputs.length - 1) {
                result.append(saperator);
            }
        }

        return result.toString();
    }

}
